#include "stdlib.h"
#include "stdio.h"
#include "string.h"

//回忆指针基础

//演示间接赋值


//演示
//*p放在等号的左边
//*p放在等号的右边

//演示
//p指针也是一种数据类型，指针的数据类型具有依赖特性；
//指针的数据类型，是指它所指向的内存空间的数据类型。
/*
int getData01(char a);
int getData01(char *p, int *len);
int getData02(char **p, int *len);
int getData03(char *p[], int a);
int getData03(char buf[][30], int n);
*/
int main()
{
	int a[5] = {1, 2, 3, 4, 5};
	int *p = a;

	//导致这个问题的原因是 a是一个指针 &a也是一个指针，但是a &a两个指针的数据类型不一样。
	//指针的步长计算公式为：p+1 ===>(unsigned int)p + sizeof(*p);
	//结论非常简单：指针步长根据 所执行内存空间的数据类型来定。
	printf("p:%d, p+1:%d\n", p, p+1);
	printf("a:%d, a+1:%d\n", a, a+1); //a是数组首元素地址，代表数组首元素，首元素是int型变量，所以p++,步长为4
	printf("&a:%d, &a+1:%d\n", &a, &a+1);//&a是整个数组类型int[5],代表整个数组，&a++步长等于4*5 = 20; 
	
	getchar();
	return 0;
}






